<?php
/**
 * Created by PhpStorm.
 * User: wodrow
 * Date: 17-11-15
 * Time: 下午6:02
 */

namespace common\components\tools;


class Excel
{
    /**
     * 将excel转换为数组 by aibhsc
     * @param string $filePath
     * @param int $sheet
     * @return array|bool
     */
    public static function formatExcelToArray($filePath='',$sheet=0){
        if(empty($filePath) or !file_exists($filePath)){die('file not exists');}
        $PHPReader = new \PHPExcel_Reader_Excel2007();        //建立reader对象
        if(!$PHPReader->canRead($filePath)){
            $PHPReader = new \PHPExcel_Reader_Excel5();
            if(!$PHPReader->canRead($filePath)){
                echo 'no Excel';
                return false;
            }
        }
        $PHPExcel = $PHPReader->load($filePath);        //建立excel对象
        $currentSheet = $PHPExcel->getSheet($sheet);        //**读取excel文件中的指定工作表*/
        $allColumn = $currentSheet->getHighestColumn();        //**取得最大的列号*/
        $allRow = $currentSheet->getHighestRow();        //**取得一共有多少行*/
        $data = array();
        for($rowIndex=1;$rowIndex<=$allRow;$rowIndex++){        //循环读取每个单元格的内容。注意行从1开始，列从A开始
            for($colIndex='A';$colIndex<=$allColumn;$colIndex++){
                $addr = $colIndex.$rowIndex;
                $cell = $currentSheet->getCell($addr)->getValue();
                if($cell instanceof \PHPExcel_RichText){ //富文本转换字符串
                    $cell = $cell->__toString();
                }
                $data[$rowIndex][$colIndex] = $cell;
            }
        }
        return $data;
    }

    public static function excelDataMap($data)
    {
        $keys = $data[0];
        unset($data[0]);
        $a = [];
        foreach ($data as $k => $v){
            foreach ($keys as $k1 => $v1){
                $a[$k-1][$v1] = $v[$k1];
            }
        }
        return $a;
    }
}